The present invention relates generally to the field of distributed component software systems (DCSSs), and more particularly to the field of distributed virtualization platforms (DVPs).
DCSSs are known. On example of a type of DCSS is a DVP. Some DVPs provide cloud computing platform as a service (PaaS). One example of software used on a DVP to provide PaaS is Cloud Foundry. (Note: the term(s) “Cloud Foundry” may be subject to trademark rights in various jurisdictions throughout the world and are used here only in reference to the products or services properly denominated by the marks to the extent that such trademark rights may exist.)
Continuing with Cloud Foundry as an example, one part of a typical Cloud Foundry system is VMC (VMware Cloud) console interface. Using this tool, a user can deploy and manage applications running on most Cloud Foundry based environments including CloudFoundry.com. Commands in VMC are broken up in to managing various concerns on Cloud Foundry; applications, services, organizations, spaces, domains etc. A user can issue a command by running “VMC” in the console immediately followed by a command name.
Another part of a typical Cloud Foundry system is the Cloud Controller. The Cloud Controller provides REST (representational state transfer) API (application program interface) endpoints for clients to access the system. The Cloud Controller maintains a database with tables for orgs, spaces, apps, services, service instances, user roles, and more. The Cloud Controller manages a blob store for: (i) resources—files that are uploaded to the Cloud Controller with a unique SHA such that they can be reused without re-uploading the file; (ii) app packages—unstaged files that represent an application; and (iii) droplets—the result of taking an app package and staging it (processing a buildpack) and preparing it to run. The Cloud Controller interacts with other core components of the Cloud Foundry platform using the NATS message bus. For example, it performs the following using NATS: (i) instructs a DEA to stage an application (processes a buildpack for the app) to prepare it to run; (ii) instructs a DEA to start or stop an application; (iii) receives information from the Health Manager about applications; (iv) subscribes to Service Gateways that advertise available services; and (v) instructs Service Gateways to handle provisioning, unprovision, bind and unbind operations for services.
NATS is an open-source, lightweight cloud messaging system. NATS has an always-on dial tone that facilitates a high degree of availability. NATS can be used as a messaging system in building reliable, and scalable, cloud and distributed systems.
The key functions of a Droplet Execution Agent (DEA) are: (i) manage warden containers—the DEA stages applications and runs applications in Warden containers; (ii) stage applications—when a new application or a new version of an application is pushed to Cloud Foundry, the Cloud Controller selects a DEA from the pool of available DEAs to stage the application (the DEA uses the appropriate buildpack to stage the application, and the result of this process is a droplet; (iii) run droplets—a DEA manages the lifecycle of each application instance running in it, starting and stopping droplets upon request of the Cloud Controller (the DEA monitors the state of a started application instance, and periodically broadcasts application state messages over NATS for consumption. When the DEA receives requests for directories and files, it redirects them to the Directory Server URL. The URL is signed by the DEA, and the Directory Server checks the validity of the URL with the DEA before serving it. A DEA periodically checks the health of the applications running in it. If a URL is mapped to an application, the DEA attempts to connect to the port assigned to the application. If the application port is accepting connections, the DEA considers that application state to be “Running.” If there is no URL mapped to the application, the DEA checks the system process table for the application process identification number. If the application process identification number exists, the DEA considers that application state to be “Running.” The DEA also checks for a AppState object for the application.
Within a DVP context, there is a known concept called “flow of control.” Flow of control refers to which software component, or components, are in control of a given process at each given point in time while the process is occurring. For example, a flow of control for deletion of an “app” on a Cloud Foundry DVP typically is as follows: (i) VMC component begins communicating with Cloud Controller component to delete the app; (ii) Cloud Controller component communicates with the DEA component to stop the droplet associated with the app; (iii) DEA component: (a) communicates with a router component to unregister the app, and (b) communicates with the health manager component to notify regarding droplet exit.